home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / Caml Light 0.7 / Caml Light 0.7 source / src / tools / makedepend < prev    next >
Text File  |  1995-06-05  |  3KB  |  96 lines

  1. # MakeDepend -- Extract dependency information from C and Caml Light sources.
  2. # Usage : MakeDepend {-C|-Caml} {file.c|file.ml}…
  3.  
  4. Set Echo 0
  5. If ! "{TempFolder}"
  6.   Set TempFolder "{MPW}"
  7. End
  8. Set temp1 "{TempFolder}"MakeDepend.temp1
  9. Set temp2 "{TempFolder}"MakeDepend.temp2
  10. Open -n "{temp1}" "{temp2}"
  11. Set Exit 0
  12.  
  13. If "{1}" == "-C"
  14.   Loop
  15.     Break if {#} == 1
  16.     Shift
  17.     Clear •:∞ "{temp1}"
  18.     Echo {1} > "{temp2}"
  19.     Files "`Catenate "{temp2}"`" ∑Dev:Null
  20.     If {Status} != 0
  21.       Echo "### MakeDepend: File not found: "`Catenate "{temp2}"` >Dev:StdErr
  22.     Else
  23.       (
  24.     Loop
  25.       Compare "{temp1}" "{temp2}" >Dev:null && Break
  26.       Catenate "{temp2}" > "{temp1}"
  27.       Search -q /•[ ∂t]*#[ ∂t]*include[ ∂t]*∂"/ `Catenate "{temp1}"` >>"{temp2}"
  28.       Find • "{temp2}"
  29.       Replace -c ∞ /•[¬"∂n]*∂"([¬"∂n]*)®0∂"≈/ ®0 "{temp2}"
  30.       Files -s `Sort -unique "{temp2}"` >"{temp2}"
  31.     End
  32.       ) ≥Dev:null
  33.       Find • "{temp2}"; Replace -c ∞ /•(≈)®0∂n/ "{1}.o ƒ ®0∂n" "{temp2}"
  34.       Catenate "{temp2}"
  35.     End
  36.   End
  37. Else if "{1}" == "-Caml"
  38.   Shift
  39.   Unset Path_arg
  40.   Loop
  41.     If "{1}" == "-I"
  42.       Set Path_arg "{2} {Path_arg}"
  43.       Shift 2
  44.     Else
  45.       Break
  46.     End
  47.   End
  48.   Loop
  49.     Break if {#} == 0
  50.     Search -q /•[ ∂t]*#[ ∂t]*open[ ∂t]*∂"/ "{1}" >"{temp1}" ≥Dev:null
  51.     Find • "{temp1}"; Replace -c ∞ /•[¬"]*∂"([¬"]*)®0∂"≈∞/ "®0" "{temp1}"
  52.     (
  53.       Catenate "{1}" >"{temp2}"
  54.       Find • "{temp2}"; Clear -c ∞ /'(*'/:/'*)'/ "{temp2}"
  55.       Find • "{temp2}"
  56.       Loop
  57.     Find /[A-Za-z0-9∂'](_«0,1»[A-Za-z0-9∂']+)*[ ∂t∂n]*__/ "{temp2}"
  58.         Break if {Status}
  59.     Find Δ§ "{temp2}"
  60.     Find /[A-Za-z0-9∂'](_«0,1»[A-Za-z0-9∂']+)*/ "{temp2}"
  61.     (Catenate "{temp2}".§; Echo) >> "{temp1}"
  62.       End
  63.     ) ≥Dev:null
  64.     If "{1}" =~ /(≈)®1.ml/
  65.       Set ModuleName "{®1}"
  66.       Set TargetName "{ModuleName}.zo"
  67.       If "`Exists -f -q {ModuleName}.mli`"
  68.         Echo "{TargetName} ƒ {ModuleName}.zi"
  69.       End
  70.     Else If "{1}" =~ /(≈)®1.mli/
  71.       Set ModuleName "{®1}"
  72.       Set TargetName "{ModuleName}.zi"
  73.     Else
  74.       Echo "### MakeDepend: Bogus file name : {1}" >Dev:StdErr
  75.       Set ModuleName ''
  76.       Set TargetName '#'
  77.     End
  78.     For i in `Sort -unique "{temp1}"`
  79.       Continue if "{i}" == "{ModuleName}"
  80.       For j in '' {Path_arg}
  81.         If "`Exists -f -q {j}{i}.mli`"
  82.           Echo "{TargetName} ƒ {j}{i}.zi"
  83.       Break
  84.         Else If "`Exists -f -q {j}{i}.ml`"
  85.           Echo "{TargetName} ƒ {j}{i}.zo"
  86.       Break
  87.     End
  88.       End
  89.     End
  90.     Shift
  91.   End
  92. Else
  93.   Echo '### usage : MakeDepend {-C|-Caml} {file.c|file.ml}…' >Dev:Stderr
  94. End
  95. Close -n "{temp1}" "{temp2}"
  96.